It is often necessary, in implementing integrated circuit devices, to transmit data between integrated circuit devices or between elements of a given integrated circuit device. Because the integrated circuit device may not be able to perform necessary functions without the data, the transmission of data can affect the performance of the integrated circuit. Further, the speed of the data transfer may affect the speed of operation of the integrated circuit device. Any delay in the data transfer may impact the ability for the integrated circuit to implement various functions.
Many data transfer protocols exist for transferring data between a peripheral device, such as a non-volatile memory, and an integrated circuit which can be a master device or a controller. A Serial Peripheral Interface (SPI) is a conventional protocol used in serial memory interfaces. The SPI protocol is used in serial Flash memory; static random access memory (SRAM) and serial electrically erasable programmable read only memory (EEPROM) interfaces, for example. The SPI protocol is based upon a four wire interface, between master and slave devices. The four signal lines include a Chip Select line, an SPI Clock line, a Master-In Slave-Out (MISO) line, and a Master-Out Slave-In (MOSI) line. The MOSI and MISO lines are unidirectional lines controlled by master and slave SPI devices, respectively. The SPI protocol is a full-duplex protocol where the master and slave SPI devices exchange data on MISO and MOSI pins with respect to a rising or falling edge of an SPI clock edge which is generated by the master SPI controller. However, the SPI protocol has many deficiencies.